package com.yunkeji.system.domain.bo;

import com.yunkeji.common.core.domain.BaseEntity;
import com.yunkeji.common.core.validate.AddGroup;
import com.yunkeji.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 用户基本信息业务对象 ykj_app_user_ext
 *
 * @author zhang
 * @date 2024-07-10
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AppUserExtBo extends BaseEntity {

    /** 自增主键 */
    @NotNull(
            message = "自增主键不能为空",
            groups = {EditGroup.class})
    private Long id;

    /** 年龄 */
    @NotNull(
            message = "年龄不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer age;

    /** 身高，单位cm */
    @NotNull(
            message = "身高，单位cm不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer height;

    /** 头像路径 */
    @NotBlank(
            message = "头像路径不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String headUrl;

    /** 出生日期 */
    @NotNull(
            message = "出生日期不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date birthDate;

    /** 学历 */
    @NotNull(
            message = "学历不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer education;

    /** 职业 */
    @NotNull(
            message = "职业不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer profession;

    /** 星座 */
    @NotNull(
            message = "星座不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer constellation;

    /** 感情状态 */
    @NotNull(
            message = "感情状态不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer sentiment;

    /** 接受约会 */
    @NotNull(
            message = "接受约会不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer tryst;

    /** 接受同居 */
    @NotNull(
            message = "接受同居不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer liveTogether;

    /** 心情 */
    @NotNull(
            message = "心情不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer mood;

    /** 居住城市 */
    @NotNull(
            message = "居住城市不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long liveCity;

    /** 居住省份 */
    @NotNull(
            message = "居住省份不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long liveProvince;

    /** 爱好 */
    @NotBlank(
            message = "爱好不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String hobby;

    /** 身份证图片 */
    @NotBlank(
            message = "身份证图片不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String cardAuthUrl;

    /** 真人认证视频 */
    @NotBlank(
            message = "真人认证视频不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String videoAuthUrl;

    /** 最近动态 */
    @NotBlank(
            message = "最近动态不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String momentsPics;

    /** 语音介绍 */
    @NotBlank(
            message = "语音介绍不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String voiceIntro;

    /** 视频介绍 */
    @NotBlank(
            message = "视频介绍不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String videoIntro;

    /** 相册 */
    @NotBlank(
            message = "相册不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String albumPics;

    /** 最后一次接听电话的时间 */
    @NotNull(
            message = "最后一次接听电话的时间不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date latestCallDate;

    /** 注册时间 */
    @NotNull(
            message = "注册时间不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date regDate;

    /** 通话评分 */
    @NotNull(
            message = "通话评分不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private BigDecimal callScore;

    /** 评分总次数 */
    @NotNull(
            message = "评分总次数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer callCount;

    /** 最后登录IP */
    @NotBlank(
            message = "最后登录IP不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String loginIp;

    /** 最后登录时间 */
    @NotNull(
            message = "最后登录时间不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Date loginDate;

    /** 身份证号码 */
    @NotBlank(
            message = "身份证号码不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String cardNum;

    /** 真实姓名 */
    @NotBlank(
            message = "真实姓名不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private String realName;

    /** 接通成功次数 */
    @NotNull(
            message = "接通成功次数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer callSuccess;

    /** 接通失败次数 */
    @NotNull(
            message = "接通失败次数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer callFail;

    /** 已经免费发送文本的次数 */
    @NotNull(
            message = "已经免费发送文本的次数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Integer freeMsgCount;

    /** 通话总分钟数 */
    @NotNull(
            message = "通话总分钟数不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private BigDecimal callDurationSum;

    /** 体型 */
    @NotNull(
            message = "体型不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long weight;

    /** 收入 */
    @NotNull(
            message = "收入不能为空",
            groups = {AddGroup.class, EditGroup.class})
    private Long income;
}
